<?php
namespace app\common\definition\netfilter;
/*
 * @Author: your name
 * @Date: 2020-11-25 10:34:55
 * @LastEditTime: 2020-12-25 10:24:18
 * @LastEditors: Please set LastEditors
 * @Description: 防火墙规则类型
 * @FilePath: /special/application/common/definition/netfilter/FirewallRuleDefinition.php
 */

class FirewallRuleDefinition
{
    /*============================================================ 规则来源类型 ============================================================*/

    //通信规则 (安全规则)
    const CONNECT_RULE_SOURCE = 'safe_rule';
    const CONNECT_RULE_SOURCE_NAME = '通信规则';
    
    //原生规则(通过客户端宿主机添加防火墙规则)
    const ORIGIN_RULE_SOURCE = 'origin_rule';
    const ORIGIN_RULE_SOURCE_NAME = '原生规则';
    
    //用户自定义规则 
    const HANDLE_RULE_SOURCE = 'firewall_rule';
    const HANDLE_RULE_SOURCE_NAME = '用户自定义规则';

    //防火墙默认行为产生的规则(对应防火墙设置功能)
    const FIREWALL_SET_RULE_SOURCE = 'firewall_set';
    const FIREWALL_SET_RULE_SOURCE_NAME = '防火墙默认行为';
    
    //防火墙开启日志记录的时候出现的日志 (对应防火墙日志开关功能)
    const FIREWALL_LOG_RULE_SOURCE = 'firewall_log_set';
    const FIREWALL_LOG_RULE_SOURCE_NAME = '防火墙日志开关';
    
    //防火墙开启日志记录的时候出现的日志 (对应防火墙日志开关功能)
    const DISGUISE_PORT_RULE_SOURCE = 'disguise_port';
    const DISGUISE_PORT_RULE_SOURCE_NAME = '端口伪装规则';
    
    //未知类型
    const UNKNOW_RULE_SOURCE = 'unknow';
    const UNKNOW_RULE_SOURCE_NAME = '未知规则来源';
    /*============================================================ 规则所属优先域 ============================================================*/
    
    //未指定规则区域
    const UNKNOW_RULE_REGION = -1;
    const UNKNOW_RULE_REGION_NAME = '未指定';

    //防火墙默认配置区域(对应防火墙默认配置功能)
    const FIREWALL_DEFAULT_CONFIG_RULE_REGION = 0;
    const FIREWALL_DEFAULT_CONFIG_RULE_REGION_NAME = '防火墙默认配置';

    //表示防火墙新增的链 如 -N 区域
    const FIREWALL_NEW_LINK_RULE_REGION = 1;
    const FIREWALL_NEW_LINK_RULE_REGION_NAME = '防火墙新增链';
    
    //通信置顶规则域 (对应通信规则功能)
    const CONNECT_TOP_RULE_REGION = 2;
    const CONNECT_TOP_RULE_REGION_NAME = '通信置顶规则';
    //通信普通规则域
    const CONNECT_NORMAL_RULE_REGION = 3;
    const CONNECT_NORMAL_RULE_REGION_NAME = '通信普通规则';
    //内网置顶规则域
    const INTRANET_HEAD_RULE_REGION = 4;
    const INTRANET_HEAD_RULE_REGION_NAME = '内网头部规则';
    //内网普通规则
    const INTRANET_NORMAL_RULE_REGION = 5;
    const INTRANET_NORMAL_RULE_REGION_NAME = '内网普通规则';
    //内网垫底规则
    const INTRANET_TAIL_RULE_REGION = 6;
    const INTRANET_TAIL_RULE_REGION_NAME = '内网底部规则';

    //外网置顶规则域
    const EXTRANET_HEAD_RULE_REGION = 7;
    const EXTRANET_HEAD_RULE_REGION_NAME = '外网头部规则';
    //外网普通规则
    const EXTRANET_NORMAL_RULE_REGION = 8;
    const EXTRANET_NORMAL_RULE_REGION_NAME = '外网普通规则';
    //外网垫底规则
    const EXTRANET_TAIL_RULE_REGION = 9;
    const EXTRANET_TAIL_RULE_REGION_NAME = '外网底部规则';

    //默认置顶规则域
    const DEFAULT_HEAD_RULE_REGION = 10;
    const DEFAULT_HEAD_RULE_REGION_NAME = '默认规则头部规则';
    //默认规则域(无法识别的规则放此处)
    const DEFAULT_NORMAL_RULE_REGION = 11;
    const DEFAULT_NORMAL_RULE_REGION_NAME = '默认规则普通规则';
    //默认垫底规则域
    const DEFAULT_TAIL_RULE_REGION = 12;
    const DEFAULT_TAIL_RULE_REGION_NAME = '默认规则底部规则';

    //防火墙日志规则
    const FIREWALL_LOG_REGION = 20;
    const FIREWALL_LOG_REGION_NAME = '防火墙日志规则';
    
    /*============================================================ 规则组类型 ============================================================*/

    //常规的规则组类型 需要客户端进行通信测试并上传规则组
    const NORMAL_RULE_GROUP = 'normal_rule_group';
    
    //没找到规则组(无规则的时候出现)
    const UNKONW_RULE_GROUP = 'unknow_rule_group';

    //主机处于学习状态时 下发的防火墙规则
    const STUDY_RULE_GROUP = 'study_rule_group';

    //原生规则
    const INIT_RULE_GROUP = 'init_rule_group';

    //错误规则组
    const ERROR_RULE_GROUP = 'error_rule_group';
    
    //回滚规则组
    const RESET_RULE_GROUP = 'reset_rule_group';

    /*============================================================ 规则日志状态 ============================================================*/

    //等待存档
    const WATTING_FOR_ARCHIVE_LOG_STATUS = 0;
    
    //规则日志存档
    const ARCHIVED_LOG_STATUS = 1;

    /*============================================================ 当前规则组状态 ============================================================*/
    
    //重置失败
    const RESET_FIAL_RULE_GROUP_STATUS = -2;

    //排序失败
    const SORT_FIAL_RULE_GROUP_STATUS = -1;

    //正常状态
    const NORMAL_RULE_GROUP_STATUS = 0;

    //等待排序规则
    const WATTING_FOR_SORT_RULE_GROUP_STATUS = 1;

    //等待重置规则
    const WATTING_FOR_RESET_RULE_GROUP_STATUS = 2;

    /*============================================================ 单条规则启用禁用状态 ============================================================*/

    //规则启用
    const RULE_ENABLE = 1;

    //规则禁用
    const RULE_DISABLE = 0;

    /*============================================================ 自定义规则类型 ============================================================*/

    //用户手动输入规则
    const HANDLE_RULE_MANUAL_TYPE = 1;
    
    //根据学习数据生成规则
    const HANDLE_RULE_AUTO_TYPE = 2;
}